Skip to main content

問題解決

遇到問題一

在新增訂單到 JSON Server 發送請求時 每一筆資料的 id 在渲染 FlatList 列表其中 data 陣列物件資料中 其中 id 必需無重複 否則彈出警告 為了解決此問題 所以發現兩種方式處理:

1.在發送訂單請求時候將 id 做一個 random,但之後可能必須要將每一筆訂單都 Load 回到 APP 端逐筆檢查是否有重複 id,亦或是後端人員必須檢查 id 重複性,提示給前端知道

2.在 FlatList 元件其中屬性

keyExtractor={(item) => item.id.toString()} 可以改用 FlatList 內部自己產生的 index 加上資料給的 id

keyExtractor={(item,index) => `${item.id.toString()}${index}` }
const handleClickPostOrder = ( ) =>{
let data =
{
id: Math.random().toString(36).substr(2, 9),
M_Name: "測試",
M_DT: "2023-09-23 10:30:00",
M_ImgSrc: "",
OrderType: 2,
CIdx: 1,
Price: 30,
Progress: 0
}
axios.post("https://json-server-vercel-w33n-git-main-raychen1996.vercel.app/Orders",data)
.then((response) => {
console.log(response.data)
Alert.alert("已送單!");
})
.catch((error) => {
Alert.alert("送單失敗!");
});
}

在業主 APP 版本,站在業主立場發現一個小問題是,當餐廳在忙著製作訂單時,沒空打開 APP 接單,或是 APP 退到背景程序,沒有活動與伺服器保持最新資料,恐導致訂單被延遲管理上問題。

思考方向是 透過第三方郵件系統結合並在 APP 寫一個無法被註銷的服務。例如與 Google Mail 串接,即是需於伺服器端寫一個 Bot 定期爬訂單資料,如有就會通知 APP 請刷新 API 資料。